package client;

import com.ineatconseil.yougo.dto.DetailedUserDto;
import com.ineatconseil.yougo.dto.RequestDto;
import com.ineatconseil.yougo.dto.RequestTypeDto;
import com.ineatconseil.yougo.dto.UserDto;
import com.ineatconseil.yougo.dto.UserTypeDto;

public interface YouGo {

	DetailedUserDto[] getDetailedUsers() throws RestException;

	RequestTypeDto[] getRequestTypeDto() throws RestException;

	void postRequestTypeDto(RequestTypeDto req) throws RestException;

	RequestTypeDto getRequestTypeDto(Long id) throws RestException;

	void putTypeDto(RequestTypeDto req) throws RestException;

	void deleteRequestTypeDto(Long requestId) throws RestException;

	UserDto[] getUserDtos() throws RestException;

	void postUserDtos(UserDto user) throws RestException;

	UserDto getUserDto(String email) throws RestException;

	UserDto getUserDtoById(Long id) throws RestException;

	void putUserDto(UserDto user) throws RestException;

	void putUserDtoPassword(UserDto user, String oldPsw, String psw,
			String confirmedPsw) throws RestException;

	void deleteUserDto(Long id) throws RestException;

	RequestDto[] getRequestDtos(Long userid) throws RestException;

	void postRequestDtos(Long userid, RequestDto req) throws RestException;

	RequestDto getRequestDtos(Long userid, Long id) throws RestException;

	void putRequestDtos(Long userid, RequestDto req) throws RestException;

	void deleteRequestDtos(Long userid, Long id) throws RestException;

	UserTypeDto[] getUserTypeDto() throws RestException;

	void postUserTypeDto(UserTypeDto user) throws RestException;

	UserTypeDto getUserTypeDto(Long id) throws RestException;

	void putUserTypeDto(UserTypeDto userType) throws RestException;

	void deleteUserTypeDto(Long id) throws RestException;

}
